package cn.gs.common.utils;

import cn.gs.common.dto.SysConstant;
import cn.gs.system.entity.User;
import org.apache.shiro.crypto.RandomNumberGenerator;
import org.apache.shiro.crypto.SecureRandomNumberGenerator;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
import org.springframework.stereotype.Component;

/**
 * @author gs
 * @date 2020/1/10
 */
@Component
public class PasswordHelper {

    // 随机生成一个随机数
    private RandomNumberGenerator randomNumberGenerator = new SecureRandomNumberGenerator();

    private String algorithName = SysConstant.ALGORITHNAME;

    private int  hashNum = SysConstant.HASHNUM;
    // 加密算法
    public void encryptPassword(User user){
        if(user.getPassword()!=null){
            user.setSalt(randomNumberGenerator.nextBytes().toHex());

            //调用simplehash  生成 加密的 密码
            // 指定散列算法 明文密码 盐值 散列的次数
            String newPassword = new SimpleHash(algorithName, user.getPassword(), ByteSource.Util.bytes(user.getSalt()), hashNum).toHex();

            user.setPassword(newPassword);
        }
    }

}
